//
// Created by ct on 2021/11/5.
//

#ifndef ALGOANDSTRUCT_DAY4_H
#define ALGOANDSTRUCT_DAY4_H

#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <climits>

using std::vector;
using std::string;
using std::istringstream;

class Day4 {

public:
    /*
 编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。



示例 1：

输入：s = ["h","e","l","l","o"]
输出：["o","l","l","e","h"]

示例 2：

输入：s = ["H","a","n","n","a","h"]
输出：["h","a","n","n","a","H"]

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/reverse-string
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     */
    static void reverseString(vector<char> &s) {
        int left = 0, right = (int) s.size() - 1;
        char t;
        for (; left <= right;) {
            t = s[left];
            s[left] = s[right];
            s[right] = t;
            left++;
            right--;
        }
    }

    static string reverseWords(string s) {
        // 这里先旋转了类似
        istringstream recond(s.assign(s.rbegin(), s.rend()));
        string word, result;
        while (recond >> word) {
            result += word.assign(word.rbegin(), word.rend()) + " ";
        }
        if (word.empty()) return word;//特殊情况s字符串类似于"  "，word为空
        result.erase(result.size() - 1, 1);//删除最后一个空格
        return result;
    }


    static int myAtoi(const string& str) {
        int i = 0;//位置
        long long res = 0;//输出结果
        int bol = 1;//符号
        while (i < str.size() && str[i] == ' ')++i;//找到第一个非空格的字符
        if (i == str.size())return 0;
        if (str[i] == '-') { bol = -1; ++i; }//运算符正负号
        else if (str[i] == '+') { bol = 1; ++i; }
        while (i < str.size() && str[i] >= '0' && str[i] <= '9') {
            res = res * 10 + str[i++] - '0';
            if (res >= 2147483648) {
                if (bol == 1)return INT_MAX;
                else return INT_MIN;
            }
        }
        return (int) res * bol;
    }
};
/*
 *
    int x = std::stoi(number);
                if (x > INT32_MAX) {
                    return INT32_MAX;
                } else if (x < INT32_MIN) {
                    return INT32_MIN;
                } else {
                    return x;
                }
 *
 * */

void func();

#endif //ALGOANDSTRUCT_DAY4_H
